#pragma once
#include "SFML/Window.hpp"
#include "GameObjectCache.h"
#include "InputManager.h"
#include "IInputProvider.h"

class Game
{
public:
	static void Start();
	static sf::RenderWindow& GetWindow();
	const static GameObjectCache& GetGameObjectCache();
	const static bool GetInput(sf::Keyboard::Key);

	const static int SCREEN_WIDTH = 1024;
	const static int SCREEN_HEIGHT = 768;

private:
	static bool IsExiting();
	static void GameLoop();

	static void ShowSplashScreen();
	static void ShowMenu();

	enum GameState {
		Unitialized,
		ShowingSplash,
		Paused,
		ShowingMenu,
		Playing,
		Exiting
		};

	static GameState _gameState;
	static sf::RenderWindow _mainWindow;
	
	static InputManager _inputManager;
	static GameObjectCache _gameObjectCache;
};